/*     */ package net.sourceforge.appgen.model;
/*     */ 
/*     */ import java.io.Serializable;
/*     */ import java.util.regex.Matcher;
/*     */ import java.util.regex.Pattern;
/*     */ import net.sourceforge.appgen.converter.FirstCharacterUpperCaseConverter;
/*     */ import net.sourceforge.appgen.converter.StringConverter;
/*     */ import net.sourceforge.appgen.util.ConventionUtils;
/*     */ 
/*     */ public class Field extends ValueModifyModel
/*     */   implements Serializable
/*     */ {
/*     */   private static final long serialVersionUID = 1L;
/*     */   public static final String FIELD_TYPE_ATTACH_FILE = "AttachFile";
/*  38 */   private static final StringConverter firstCharacterCaptitalizeConverter = new FirstCharacterUpperCaseConverter();
/*     */ 
/*  40 */   private static final Pattern VALID_FIELD_NAME_PATTERN = Pattern.compile("^([a-z]+([a-z0-9_]+[a-zA-Z0-9_]*)?)$");
/*     */ 
/*  42 */   private static final Pattern VALID_FIELD_TYPE_PATTERN = Pattern.compile("^((([a-z]+(a-zA-Z0-9)*)?[.]{1})+[a-zA-Z]+([a-zA-Z0-9]*)?)$");
/*     */   private Entity entity;
/*     */   private String columnName;
			private String remarks;//描述
/*     */   private String fieldName;
/*     */   private String columnType;
/*     */   private String fieldType;
/*     */   private boolean create;
/*     */   private int columnSize;
/*     */   private int pkPosition;
/*     */   private boolean nullable;
/*     */   private boolean lob;
			private int decimalDegit;
/*     */ 
/*     */   public Field(Entity entity)
/*     */   {
/*  67 */     this.entity = entity;
/*     */   }
/*     */ 
/*     */   public String getFirstCapFieldName() {
/*  71 */     return firstCharacterCaptitalizeConverter.convert(this.fieldName);
/*     */   }
/*     */ 
/*     */   public String getSetterMethodName() {
/*  75 */     return "set" + firstCharacterCaptitalizeConverter.convert(this.fieldName);
/*     */   }
/*     */ 
/*     */   public String getGetterMethodName() {
/*  79 */     if ("boolean".equals(this.fieldType)) {
/*  80 */       return "is" + firstCharacterCaptitalizeConverter.convert(this.fieldName);
/*     */     }
/*     */ 
/*  83 */     return "get" + firstCharacterCaptitalizeConverter.convert(this.fieldName);
/*     */   }
/*     */ 
/*     */   public String getSimpleFieldType() {
/*  87 */     return ConventionUtils.getSimpleClassName(this.fieldType);
/*     */   }
/*     */ 
/*     */   public boolean hasNullValue() {
/*  91 */     return getNullValue() != null;
/*     */   }
/*     */ 
/*     */   public String getNullValue() {
/*  95 */     if (("byte".equals(this.fieldType)) || (Byte.class.getName().equals(this.fieldType))) {
/*  96 */       return "0";
/*     */     }
/*  98 */     if (("short".equals(this.fieldType)) || (Short.class.getName().equals(this.fieldType))) {
/*  99 */       return "0";
/*     */     }
/* 101 */     if (("int".equals(this.fieldType)) || (Integer.class.getName().equals(this.fieldType))) {
/* 102 */       return "0";
/*     */     }
/* 104 */     if (("long".equals(this.fieldType)) || (Long.class.getName().equals(this.fieldType))) {
/* 105 */       return "0";
/*     */     }
/* 107 */     if (("float".equals(this.fieldType)) || (Float.class.getName().equals(this.fieldType))) {
/* 108 */       return "0";
/*     */     }
/* 110 */     if (("double".equals(this.fieldType)) || (Double.class.getName().equals(this.fieldType))) {
/* 111 */       return "0";
/*     */     }
/* 113 */     if (("char".equals(this.fieldType)) || (Character.class.getName().equals(this.fieldType))) {
/* 114 */       return null;
/*     */     }
/* 116 */     if (("boolean".equals(this.fieldType)) || (Boolean.class.getName().equals(this.fieldType))) {
/* 117 */       return "false";
/*     */     }
/*     */ 
/* 120 */     return null;
/*     */   }
/*     */ 
/*     */   public boolean isPrimitiveType() {
/* 124 */     if ("byte".equals(this.fieldType)) {
/* 125 */       return true;
/*     */     }
/* 127 */     if ("short".equals(this.fieldType)) {
/* 128 */       return true;
/*     */     }
/* 130 */     if ("int".equals(this.fieldType)) {
/* 131 */       return true;
/*     */     }
/* 133 */     if ("long".equals(this.fieldType)) {
/* 134 */       return true;
/*     */     }
/* 136 */     if ("float".equals(this.fieldType)) {
/* 137 */       return true;
/*     */     }
/* 139 */     if ("double".equals(this.fieldType)) {
/* 140 */       return true;
/*     */     }
/* 142 */     if ("char".equals(this.fieldType)) {
/* 143 */       return true;
/*     */     }
/*     */ 
/* 146 */     return "boolean".equals(this.fieldType);
/*     */   }
/*     */ 
/*     */   public boolean isAttachFileType()
/*     */   {
/* 153 */     return "AttachFile".equals(this.fieldType);
/*     */   }
/*     */ 
/*     */   public String getSimpleObjectClassName() {
/* 157 */     if ("byte".equals(this.fieldType)) {
/* 158 */       return Byte.class.getSimpleName();
/*     */     }
/* 160 */     if ("short".equals(this.fieldType)) {
/* 161 */       return Short.class.getSimpleName();
/*     */     }
/* 163 */     if ("int".equals(this.fieldType)) {
/* 164 */       return Integer.class.getSimpleName();
/*     */     }
/* 166 */     if ("long".equals(this.fieldType)) {
/* 167 */       return Long.class.getSimpleName();
/*     */     }
/* 169 */     if ("float".equals(this.fieldType)) {
/* 170 */       return Float.class.getSimpleName();
/*     */     }
/* 172 */     if ("double".equals(this.fieldType)) {
/* 173 */       return Double.class.getSimpleName();
/*     */     }
/* 175 */     if ("char".equals(this.fieldType)) {
/* 176 */       return Character.class.getSimpleName();
/*     */     }
/* 178 */     if ("boolean".equals(this.fieldType)) {
/* 179 */       return Boolean.class.getSimpleName();
/*     */     }
/*     */ 
/* 182 */     return getSimpleFieldType();
/*     */   }
/*     */ 
/*     */   public String getToPrimitiveMethod() {
/* 186 */     if (isPrimitiveType()) {
/* 187 */       return getFieldType() + "Value()";
/*     */     }
/*     */ 
/* 190 */     return null;
/*     */   }
/*     */ 
/*     */   public boolean isValidColumnName() {
/* 194 */     String columnName = getColumnName();
/*     */ 
/* 196 */     if (((columnName != null ? 1 : 0) & (columnName.length() == 0 ? 1 : 0)) != 0) {
/* 197 */       return false;
/*     */     }
/*     */ 
/* 201 */     return columnName.indexOf(" ") < 0;
/*     */   }
/*     */ 
/*     */   public boolean isValidColumnType()
/*     */   {
/* 208 */     String columnType = getColumnType();
/*     */ 
/* 210 */     if (((columnType != null ? 1 : 0) & (columnType.length() == 0 ? 1 : 0)) != 0) {
/* 211 */       return false;
/*     */     }
/*     */ 	//columnType.indexOf(" ") < 0
/* 215 */     return true;
/*     */   }
/*     */ 
/*     */   public boolean isValidColumnLength()
/*     */   {
/* 222 */     return getColumnSize() >= 0;
/*     */   }
/*     */ 
/*     */   public boolean isValidNullable()
/*     */   {
/* 227 */     return (getPkPosition() <= 0) || (!isNullable());
/*     */   }
/*     */ 
/*     */   public boolean isValidFieldName()
/*     */   {
/* 234 */     if (getFieldName() == null) {
/* 235 */       return false;
/*     */     }
/*     */ 
/* 238 */     Matcher m = VALID_FIELD_NAME_PATTERN.matcher(getFieldName());
/*     */ 
/* 240 */     if (!m.matches()) {
/* 241 */       return false;
/*     */     }
/*     */ 
/* 245 */     return !ConventionUtils.isReservedWord(getFieldName());
/*     */   }
/*     */ 
/*     */   public boolean isValidFieldType()
/*     */   {
/* 252 */     if (getFieldType() == null) {
/* 253 */       return false;
/*     */     }
/*     */ 
/* 256 */     Matcher m = VALID_FIELD_TYPE_PATTERN.matcher(getFieldType());
/*     */ 
/* 258 */     if (m.matches()) {
/* 259 */       return true;
/*     */     }
/*     */ 
/* 262 */     if (isPrimitiveType()) {
/* 263 */       return true;
/*     */     }
/*     */ 
/* 266 */     if (isAttachFileType())
/*     */     {
/* 268 */       return this.pkPosition <= 0;
/*     */     }
/*     */ 
/* 274 */     return false;
/*     */   }
/*     */ 
/*     */   public int hashCode()
/*     */   {
/* 280 */     int result = 1;
/* 281 */     result = 31 * result + this.columnSize;
/* 282 */     result = 31 * result + (this.columnName == null ? 0 : this.columnName.hashCode());
/* 283 */     result = 31 * result + (this.columnType == null ? 0 : this.columnType.hashCode());
/* 284 */     result = 31 * result + (this.create ? 1231 : 1237);
/* 285 */     result = 31 * result + (this.fieldName == null ? 0 : this.fieldName.hashCode());
/* 286 */     result = 31 * result + (this.fieldType == null ? 0 : this.fieldType.hashCode());
/* 287 */     result = 31 * result + (this.lob ? 1231 : 1237);
/* 288 */     result = 31 * result + (this.nullable ? 1231 : 1237);
/* 289 */     result = 31 * result + this.pkPosition;
/* 290 */     return result;
/*     */   }
/*     */ 
/*     */   public boolean equals(Object obj)
/*     */   {
/* 295 */     if (this == obj)
/* 296 */       return true;
/* 297 */     if (obj == null)
/* 298 */       return false;
/* 299 */     if (getClass() != obj.getClass())
/* 300 */       return false;
/* 301 */     Field other = (Field)obj;
/* 302 */     if (this.columnSize != other.columnSize)
/* 303 */       return false;
/* 304 */     if (this.columnName == null) {
/* 305 */       if (other.columnName != null)
/* 306 */         return false;
/* 307 */     } else if (!this.columnName.equals(other.columnName))
/* 308 */       return false;
/* 309 */     if (this.columnType == null) {
/* 310 */       if (other.columnType != null)
/* 311 */         return false;
/* 312 */     } else if (!this.columnType.equals(other.columnType))
/* 313 */       return false;
/* 314 */     if (this.create != other.create)
/* 315 */       return false;
/* 316 */     if (this.fieldName == null) {
/* 317 */       if (other.fieldName != null)
/* 318 */         return false;
/* 319 */     } else if (!this.fieldName.equals(other.fieldName))
/* 320 */       return false;
/* 321 */     if (this.fieldType == null) {
/* 322 */       if (other.fieldType != null)
/* 323 */         return false;
/* 324 */     } else if (!this.fieldType.equals(other.fieldType))
/* 325 */       return false;
/* 326 */     if (this.lob != other.lob)
/* 327 */       return false;
/* 328 */     if (this.nullable != other.nullable) {
/* 329 */       return false;
/*     */     }
/* 331 */     return this.pkPosition == other.pkPosition;
/*     */   }
/*     */ 
/*     */   public Entity getEntity()
/*     */   {
/* 336 */     return this.entity;
/*     */   }
/*     */ 
/*     */   public String getColumnName() {
/* 340 */     return this.columnName;
/*     */   }
/*     */ 
/*     */   public void setColumnName(String columnName) {
/* 344 */     this.columnName = columnName;
/*     */ 
/* 346 */     valueModified();
/*     */   }
/*     */ 
/*     */   public String getFieldName() {
/* 350 */     return this.fieldName;
/*     */   }
/*     */ 
/*     */   public void setFieldName(String fieldName) {
/* 354 */     this.fieldName = fieldName;
/*     */ 
/* 356 */     valueModified();
/*     */   }
/*     */ 
/*     */   public String getColumnType() {
/* 360 */     return this.columnType;
/*     */   }
/*     */ 
/*     */   public void setColumnType(String columnType) {
/* 364 */     this.columnType = columnType;
/*     */ 
/* 366 */     valueModified();
/*     */   }
/*     */ 
/*     */   public String getFieldType() {
/* 370 */     return this.fieldType;
/*     */   }
/*     */ 
/*     */   public void setFieldType(String fieldType) {
/* 374 */     this.fieldType = fieldType;
/*     */ 
/* 376 */     valueModified();
/*     */   }
/*     */ 
/*     */   public boolean isCreate() {
/* 380 */     return this.create;
/*     */   }
/*     */ 
/*     */   public void setCreate(boolean create) {
/* 384 */     this.create = create;
/*     */ 
/* 386 */     valueModified();
/*     */   }
/*     */ 
/*     */   public int getColumnSize() {
/* 390 */     return this.columnSize;
/*     */   }
/*     */ 
/*     */   public void setColumnSize(int columnLength) {
/* 394 */     this.columnSize = columnLength;
/*     */ 
/* 396 */     valueModified();
/*     */   }
/*     */ 
/*     */   public int getPkPosition() {
/* 400 */     return this.pkPosition;
/*     */   }
/*     */ 
/*     */   public void setPkPosition(int pkPosition) {
/* 404 */     this.pkPosition = pkPosition;
/*     */ 
/* 406 */     valueModified();
/*     */   }
/*     */ 
/*     */   public boolean isNullable() {
/* 410 */     return this.nullable;
/*     */   }
public int getDecimalDegit() {
	return decimalDegit;
}
public void setDecimalDegit(int decimalDegit) {
	this.decimalDegit = decimalDegit;
	 valueModified();
}
/*     */ 
/*     */   public void setNullable(boolean nullable) {
/* 414 */     this.nullable = nullable;
/*     */   }
/*     */ 
/*     */   public boolean isLob() {
/* 418 */     return this.lob;
/*     */   }
/*     */ 
/*     */   public void setLob(boolean lob) {
/* 422 */     this.lob = lob;
/*     */ 
/* 424 */     valueModified();
/*     */   }
/*     */
public String getRemarks() {
	return remarks;
}
public void setRemarks(String remarks) {
	this.remarks = remarks;
	 valueModified();
} }

/* Location:           C:\Users\lzl6066\Downloads\net.sourceforge.appgen_1.2.0\plugins\net.sourceforge.appgen_1.2.0.201002031718\
 * Qualified Name:     net.sourceforge.appgen.model.Field
 * JD-Core Version:    0.6.0
 */